<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <div>购物车数量:{{count}}</div>
    <button @click="add">同步 +1</button>
    <button @click="addAsync">1s后 +1</button>
    <button @click="addAsyncParams">2s后 +1</button>
</div>
</body>
<script src="../../js/vuex.js"></script>
<script src="../../js/vue.js"></script>
<script type="text/javascript">
    const store=new Vuex.Store({
        state:{
            count:0
        },
        mutations:{
            increment(state) {
                state.count++
            }
        },
        actions:{
            increment({commit}) {
                commit('increment')
            },
            incrementAsync({commit}){
                setTimeout(()=>{
                    commit('increment')
                },1000)
            },
            incrementAsyncParams({commit},payload){
                setTimeout(()=>{
                    commit('increment')
                },payload.time)
            }
        }
    })

    var vm=new Vue({
        el:'#app',
        store,
        methods:{
            add(){
                this.$store.dispatch('increment')
            },
            addAsync(){
                this.$store.dispatch({
                    type:'incrementAsync'
                })
            },
            addAsyncParams(){
                this.$store.dispatch('incrementAsyncParams',{
                    time:2000
                })
            },
        },
        computed:{
            count(){
                return this.$store.state.count
            }
        }
    })
</script>
</html>
